<?php
// 处理参数
// $file_info['-f'] 文件全路径
array_shift($argv) ;
$file_info = array() ;
for($i=0 , $length = count($argv);$i < $length ;$i+=2){
    $file_info[$argv[$i]] = $argv[$i+1] ;
}
$file_path = str_replace('\\', '/', $file_info['-f']);

// define ftp config
$ftp_host = '172.25.34.21';
$ftp_port = 21;
$remote_root = '';
$local_root = '';
$local_root_path_all = array('ppms' => 'F:/www/ppms', 'paipai' => 'E:/paipai_svn/c2c_dynamic_proj/trunk');

// 根据当前文件目录配置FTP信息
if(strpos($file_path, $local_root_path_all['ppms']) !== false){
    // PPMS环境
    $ftp_user = 'c2c_ppms';
    $ftp_pass = 'c2c_ppms';
    
    // FTP环境根目录
    $remote_root_dir = '' ;
    // 本地上传根目录（只允许此路径下的文件上传）
    $local_root_path = 'F:/www/ppms' ;
    
}elseif (strpos($file_path, $local_root_path_all['paipai']) !== false) {
    // paipai 环境
    $ftp_user = 'c2c_design_ui';
    $ftp_pass = 'c2c_design_ui';
    
    // FTP环境根目录
    $remote_root_dir = '/newforward' ;
    // 本地上传根目录（只允许此路径下的文件上传）
    $local_root_path = 'E:/paipai_svn/c2c_dynamic_proj/trunk' ;

}else {
    echo 'You can upload file in "'.$local_root_path_all['ppms'].'" or "'.$local_root_path_all['paipai'].'"'."\n" ;
    exit() ;
}

// 检查文件是否合法
if(!is_file($file_path)) {
    echo "$file_path is bad file.\n";
    exit() ;
}

// 处理路径
$local_root_dir = substr($local_root_path, strrpos($local_root_path, '/') +1 );
$file_name = substr($file_path, strrpos($file_path, '/')+1) ;
$local_root = substr($file_path, 0, strrpos($file_path, '/')+1) ;
$remote_root = $remote_root_dir.substr($local_root, strpos($local_root, $local_root_dir) + strlen($local_root_dir)) ;

//echo $file_path."\n".$file_name."\n".$local_root."\n".$remote_root."\n" ;
//exit() ;


// FTP连接 上传
$ftp = getFtpConnection($ftp_host, $ftp_port, $ftp_user, $ftp_pass);
$files = array($file_name);
upload($ftp, $remote_root, $local_root, $files);
ftp_close($ftp);

/**
 * 连接FTP
 * @param $host {string} 主机名
 * @param $user {string} 用户名
 * @param $pass {string} 密码
 */
function getFtpConnection($host, $port, $user, $pass) {
    $ftp = @ftp_connect($host, $port);
    if($ftp === false) {
        echo "Connect to FTP Failed!\n";
        exit() ;
    }
    if(!@ftp_login($ftp, $user, $pass)) {
        echo "Login FTP Failed!\n";
        exit() ;
    }
    if(!@ftp_pasv($ftp, true)) {
        echo "Choose PASV mode Failed!\n";
        exit() ;
    }
    return $ftp;
}

/**
 * FTP上传文件
 * @param $ftp FTP连接标识符
 * @param $remote_root {string} 远程路径
 * @param $local_root {string} 本地路径
 * @param $uploadFiles {array} 要上传的文件
 */
function upload($ftp, $remote_root, $local_root, $uploadFiles) {
    if(count($uploadFiles) == 0) {
        echo "No file found.\n";
        exit() ;
    }
    if(!@ftp_chdir($ftp, $remote_root)) {
        echo "Switch dir to $remote_root Failed!\n";
        exit() ;
    }
    foreach($uploadFiles as $f) {
        if(ftp_put($ftp, basename($f), $local_root.$f, FTP_BINARY)) {
            echo "\n"."$f uploaded Successfully At ".date('Y-m-d H:i:s', time()+8*60*60)."\n" ;
        } else {
            echo "$f upload Failed! \n";
        }
    }
}

?>
